home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 45
/
Aminet 45 (2001)(GTI - Schatztruhe)[!][Oct 2001].iso
/
Aminet
/
gfx
/
x11
/
x3270_3_2_16.lha
/
amiga_src
/
3270ds.h
next >
Wrap
Text File
|
2008-12-15
|
10KB
|
299 lines
/*
* Modifications Copyright 1993, 1994, 1995, 1999, 2000 by Paul Mattes.
* Original X11 Port Copyright 1990 by Jeff Sparkes.
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted,
* provided that the above copyright notice appear in all copies and that
* both that copyright notice and this permission notice appear in
* supporting documentation.
*
* Copyright 1989 by Georgia Tech Research Corporation, Atlanta, GA 30332.
* All Rights Reserved. GTRC hereby grants public use of this software.
* Derivative works based on this software must incorporate this copyright
* notice.
*/
/*
* 3270ds.h
*
* Header file for the 3270 Data Stream Protocol.
*/
/* 3270 commands */
#define CMD_W 0x01 /* write */
#define CMD_RB 0x02 /* read buffer */
#define CMD_NOP 0x03 /* no-op */
#define CMD_EW 0x05 /* erase/write */
#define CMD_RM 0x06 /* read modified */
#define CMD_EWA 0x0d /* erase/write alternate */
#define CMD_RMA 0x0e /* read modified all */
#define CMD_EAU 0x0f /* erase all unprotected */
#define CMD_WSF 0x11 /* write structured field */
/* SNA 3270 commands */
#define SNA_CMD_RMA 0x6e /* read modified all */
#define SNA_CMD_EAU 0x6f /* erase all unprotected */
#define SNA_CMD_EWA 0x7e /* erase/write alternate */
#define SNA_CMD_W 0xf1 /* write */
#define SNA_CMD_RB 0xf2 /* read buffer */
#define SNA_CMD_WSF 0xf3 /* write structured field */
#define SNA_CMD_EW 0xf5 /* erase/write */
#define SNA_CMD_RM 0xf6 /* read modified */
/* 3270 orders */
#define ORDER_PT 0x05 /* program tab */
#define ORDER_GE 0x08 /* graphic escape */
#define ORDER_SBA 0x11 /* set buffer address */
#define ORDER_EUA 0x12 /* erase unprotected to address */
#define ORDER_IC 0x13 /* insert cursor */
#define ORDER_SF 0x1d /* start field */
#define ORDER_SA 0x28 /* set attribute */
#define ORDER_SFE 0x29 /* start field extended */
#define ORDER_YALE 0x2b /* Yale sub command */
#define ORDER_MF 0x2c /* modify field */
#define ORDER_RA 0x3c /* repeat to address */
#define FCORDER_NULL 0x00 /* format control: null */
#define FCORDER_FF 0x0c /* form feed */
#define FCORDER_CR 0x0d /* carriage return */
#define FCORDER_NL 0x15 /* new line */
#define FCORDER_EM 0x19 /* end of medium */
#define FCORDER_DUP 0x1c /* duplicate */
#define FCORDER_FM 0x1e /* field mark */
#define FCORDER_SUB 0x3f /* substitute */
#define FCORDER_EO 0xff /* eight ones */
/* SCS control code, some overlap orders */
#define SCS_BS 0x16 /* Back Space */
#define SCS_BEL 0x2f /* Bell Function */
#define SCS_CR 0x0d /* Carriage Return */
#define SCS_ENP 0x14 /* Enable Presentation */
#define SCS_FF 0x0c /* Forms Feed */
#define SCS_GE 0x08 /* Graphic Escape */
#define SCS_HT 0x05 /* Horizontal Tab */
#define SCS_INP 0x24 /* Inhibit Presentation */
#define SCS_IRS 0x1e /* Interchange-Record Separator */
#define SCS_LF 0x25 /* Line Feed */
#define SCS_NL 0x15 /* New Line */
#define SCS_SA 0x28 /* Set Attribute */
#define SCS_SET 0x2b /* Set: */
#define SCS_SHF 0xc1 /* Horizontal format */
#define SCS_SLD 0xc6 /* Line Density */
#define SCS_SVF 0xc2 /* Vertical Format */
#define SCS_TRN 0x35 /* Transparent */
#define SCS_VCS 0x04 /* Vertical Channel Select */
#define SCS_VT 0x0b /* Vertical Tab */
/* Structured fields */
#define SF_READ_PART 0x01 /* read partition */
#define SF_RP_QUERY 0x02 /* query */
#define SF_RP_QLIST 0x03 /* query list */
#define SF_RPQ_LIST 0x00 /* QCODE list */
#define SF_RPQ_EQUIV 0x40 /* equivalent+ QCODE list */
#define SF_RPQ_ALL 0x80 /* all */
#define SF_ERASE_RESET 0x03 /* erase/reset */
#define SF_ER_DEFAULT 0x00 /* default */
#define SF_ER_ALT 0x80 /* alternate */
#define SF_SET_REPLY_MODE 0x09 /* set reply mode */
#define SF_SRM_FIELD 0x00 /* field */
#define SF_SRM_XFIELD 0x01 /* extended field */
#define SF_SRM_CHAR 0x02 /* character */
#define SF_CREATE_PART 0x0c /* create partition */
#define CPFLAG_PROT 0x40 /* protected flag */
#define CPFLAG_COPY_PS 0x20 /* local copy to presentation space */
#define CPFLAG_BASE 0x07 /* base character set index */
#define SF_OUTBOUND_DS 0x40 /* outbound 3270 DS */
#define SF_TRANSFER_DATA 0xd0 /* file transfer open request */
/* Query replies */
#define QR_SUMMARY 0x80 /* summary */
#define QR_USABLE_AREA 0x81 /* usable area */
#define QR_ALPHA_PART 0x84 /* alphanumeric partitions */
#define QR_CHARSETS 0x85 /* character sets */
#define QR_COLOR 0x86 /* color */
#define QR_HIGHLIGHTING 0x87 /* highlighting */
#define QR_REPLY_MODES 0x88 /* reply modes */
#define QR_PC3270 0x93 /* PC3270 */
#define QR_DDM 0x95 /* distributed data management */
#define QR_IMP_PART 0xa6 /* implicit partition */
#define QR_NULL 0xff /* null */
#define BA_TO_ROW(ba) ((ba) / COLS)
#define BA_TO_COL(ba) ((ba) % COLS)
#define ROWCOL_TO_BA(r,c) (((r) * COLS) + c)
#define INC_BA(ba) { (ba) = ((ba) + 1) % (COLS * ROWS); }
#define DEC_BA(ba) { (ba) = (ba) ? (ba - 1) : ((COLS*ROWS) - 1); }
/* field attribute definitions
* The 3270 fonts are based on the 3270 character generator font found on
* page 12-2 in the IBM 3270 Information Display System Character Set
* Reference. Characters 0xC0 through 0xCF and 0xE0 through 0xEF
* (inclusive) are purposely left blank and are used to represent field
* attributes as follows:
*
* 11x0xxxx
* | ||||
* | ||++--- 00 normal intensity/non-selectable
* | || 01 normal intensity/selectable
* | || 10 high intensity/selectable
* | || 11 zero intensity/non-selectable
* | |+----- unprotected(0)/protected(1)
* | +------ alphanumeric(0)/numeric(1)
* +-------- unmodified(0)/modified(1)
*/
#define FA_BASE 0xc0
#define FA_MASK 0xd0
#define FA_MODIFY 0x20
#define FA_NUMERIC 0x08
#define FA_PROTECT 0x04
#define FA_INTENSITY 0x03
#define FA_INT_NORM_NSEL 0x00
#define FA_INT_NORM_SEL 0x01
#define FA_INT_HIGH_SEL 0x02
#define FA_INT_ZERO_NSEL 0x03
#define IS_FA(c) (((c) & FA_MASK) == FA_BASE)
#define FA_IS_MODIFIED(c) ((c) & FA_MODIFY)
#define FA_IS_NUMERIC(c) ((c) & FA_NUMERIC)
#define FA_IS_PROTECTED(c) ((c) & FA_PROTECT)
#define FA_IS_SKIP(c) (FA_IS_NUMERIC(c) && FA_IS_PROTECTED(c))
#define FA_IS_ZERO(c) \
(((c) & FA_INTENSITY) == FA_INT_ZERO_NSEL)
#define FA_IS_HIGH(c) \
(((c) & FA_INTENSITY) == FA_INT_HIGH_SEL)
#define FA_IS_NORMAL(c) \
( \
((c) & FA_INTENSITY) == FA_INT_NORM_NSEL \
|| \
((c) & FA_INTENSITY) == FA_INT_NORM_SEL \
)
#define FA_IS_SELECTABLE(c) \
( \
((c) & FA_INTENSITY) == FA_INT_NORM_SEL \
|| \
((c) & FA_INTENSITY) == FA_INT_HIGH_SEL \
)
#define FA_IS_INTENSE(c) \
((c & FA_INT_HIGH_SEL) == FA_INT_HIGH_SEL)
/* Extended attributes */
#define XA_ALL 0x00
#define XA_3270 0xc0
#define XA_VALIDATION 0xc1
#define XAV_FILL 0x04
#define XAV_ENTRY 0x02
#define XAV_TRIGGER 0x01
#define XA_OUTLINING 0xc2
#define XAO_UNDERLINE 0x01
#define XAO_RIGHT 0x02
#define XAO_OVERLINE 0x04
#define XAO_LEFT 0x08
#define XA_HIGHLIGHTING 0x41
#define XAH_DEFAULT 0x00
#define XAH_NORMAL 0xf0
#define XAH_BLINK 0xf1
#define XAH_REVERSE 0xf2
#define XAH_UNDERSCORE 0xf4
#define XAH_INTENSIFY 0xf8
#define XA_FOREGROUND 0x42
#define XAC_DEFAULT 0x00
#define XA_CHARSET 0x43
#define XA_BACKGROUND 0x45
#define XA_TRANSPARENCY 0x46
#define XAT_DEFAULT 0x00
#define XAT_OR 0xf0
#define XAT_XOR 0xf1
#define XAT_OPAQUE 0xff
/* WCC definitions */
#define WCC_RESET(c) ((c) & 0x40)
#define WCC_START_PRINTER(c) ((c) & 0x08)
#define WCC_SOUND_ALARM(c) ((c) & 0x04)
#define WCC_KEYBOARD_RESTORE(c) ((c) & 0x02)
#define WCC_RESET_MDT(c) ((c) & 0x01)
/* AIDs */
#define AID_NO 0x60 /* no AID generated */
#define AID_QREPLY 0x61
#define AID_ENTER 0x7d
#define AID_PF1 0xf1
#define AID_PF2 0xf2
#define AID_PF3 0xf3
#define AID_PF4 0xf4
#define AID_PF5 0xf5
#define AID_PF6 0xf6
#define AID_PF7 0xf7
#define AID_PF8 0xf8
#define AID_PF9 0xf9
#define AID_PF10 0x7a
#define AID_PF11 0x7b
#define AID_PF12 0x7c
#define AID_PF13 0xc1
#define AID_PF14 0xc2
#define AID_PF15 0xc3
#define AID_PF16 0xc4
#define AID_PF17 0xc5
#define AID_PF18 0xc6
#define AID_PF19 0xc7
#define AID_PF20 0xc8
#define AID_PF21 0xc9
#define AID_PF22 0x4a
#define AID_PF23 0x4b
#define AID_PF24 0x4c
#define AID_OICR 0xe6
#define AID_MSR_MHS 0xe7
#define AID_SELECT 0x7e
#define AID_PA1 0x6c
#define AID_PA2 0x6e
#define AID_PA3 0x6b
#define AID_CLEAR 0x6d
#define AID_SYSREQ 0xf0
#define AID_SF 0x88
#define SFID_QREPLY 0x81
/* Colors */
#define COLOR_NEUTRAL_BLACK 0
#define COLOR_BLUE 1
#define COLOR_RED 2
#define COLOR_PINK 3
#define COLOR_GREEN 4
#define COLOR_TURQUOISE 5
#define COLOR_YELLOW 6
#define COLOR_NEUTRAL_WHITE 7
#define COLOR_BLACK 8
#define COLOR_DEEP_BLUE 9
#define COLOR_ORANGE 10
#define COLOR_PURPLE 11
#define COLOR_PALE_GREEN 12
#define COLOR_PALE_TURQUOISE 13
#define COLOR_GREY 14
#define COLOR_WHITE 15
/* Data stream manipulation macros. */
#define MASK32 0xff000000U
#define MASK24 0x00ff0000U
#define MASK16 0x0000ff00U
#define MASK08 0x000000ffU
#define MINUS1 0xffffffffU
#define SET16(ptr, val) { \
*((ptr)++) = ((val) & MASK16) >> 8; \
*((ptr)++) = ((val) & MASK08); \
}
#define GET16(val, ptr) { \
(val) = *((ptr)+1); \
(val) += *(ptr) << 8; \
}
#define SET32(ptr, val) { \
*((ptr)++) = ((val) & MASK32) >> 24; \
*((ptr)++) = ((val) & MASK24) >> 16; \
*((ptr)++) = ((val) & MASK16) >> 8; \
*((ptr)++) = ((val) & MASK08); \
}
#define HIGH8(s) (((s) >> 8) & 0xff)
#define LOW8(s) ((s) & 0xff)